Syntax10.Scn.Fnt Syntax10b.Scn.Fnt MODULE AmigaBSD; (** 1996-07-15 RD *) IMPORT SYSTEM, AmigaExec, Console; CONST bsdName*="bsdsocket.library"; minversion = 0; bsdBase-: AmigaExec.LibraryPtr; bsdVersion-: INTEGER; termEntry: AmigaExec.TermEntry; PROCEDURE -ReturnD0 04EH,05EH, 04EH,075H; PROCEDURE accept*(s, adrPtr, adrlenPtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, adrPtr ); SYSTEM.PUTREG( 9, adrlenPtr ); SYSTEM.CALL( -48, bsdBase ); ReturnD0 END accept; PROCEDURE bind*(s, adrPtr, adrlen: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, adrPtr ); SYSTEM.PUTREG( 1, adrlen ); SYSTEM.CALL( -36, bsdBase ); ReturnD0 END bind; PROCEDURE close*(s: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.CALL( -78, bsdBase ); ReturnD0 END close; PROCEDURE connect*(s, adrPtr, adrlen: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, adrPtr ); SYSTEM.PUTREG( 1, adrlen ); SYSTEM.CALL( -54, bsdBase ); ReturnD0 END connect; PROCEDURE gethostbyaddr*(adrPtr, len, type: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 8, adrPtr ); SYSTEM.PUTREG( 0, len ); SYSTEM.PUTREG( 1, type ); SYSTEM.CALL( -216, bsdBase ); ReturnD0 END gethostbyaddr; PROCEDURE gethostbyname*(namePtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 8, namePtr ); SYSTEM.CALL( -210, bsdBase ); ReturnD0 END gethostbyname; PROCEDURE gethostname*(namePtr, namelen: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 8, namePtr ); SYSTEM.PUTREG( 0, namelen ); SYSTEM.CALL( -282, bsdBase ); ReturnD0 END gethostname; PROCEDURE getpeername*(s, adr, adrlenPtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, adr ); SYSTEM.PUTREG( 9, adrlenPtr ); SYSTEM.CALL( -108, bsdBase ); ReturnD0 END getpeername; PROCEDURE inetaddr*(cpPtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 8, cpPtr ); SYSTEM.CALL( -180, bsdBase ); ReturnD0 END inetaddr; PROCEDURE ioctl*(s, cmd, argPtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 1, cmd ); SYSTEM.PUTREG( 8, argPtr ); SYSTEM.CALL( -114, bsdBase ); ReturnD0 END ioctl; PROCEDURE listen*(s, backlog: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 1, backlog ); SYSTEM.CALL( -42, bsdBase ); ReturnD0 END listen; PROCEDURE recv*(s, bufPtr, len, flag: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, bufPtr ); SYSTEM.PUTREG( 1, len ); SYSTEM.PUTREG( 2, flag ); SYSTEM.CALL( -78, bsdBase ); ReturnD0 END recv; PROCEDURE recvfrom*(s, bufPtr, len, flags, fromPtr, fromlenPtr: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, bufPtr ); SYSTEM.PUTREG( 1, len ); SYSTEM.PUTREG( 2, flags ); SYSTEM.PUTREG( 9, fromPtr ); SYSTEM.PUTREG( 10, fromlenPtr ); SYSTEM.CALL( -72, bsdBase ); ReturnD0 END recvfrom; PROCEDURE select*(nfds, readfdsPtr, writefdsPtr, exceptfdsPtr, timeoutPtr: LONGINT): LONGINT; VAR Dummy: LONGINT; BEGIN Dummy:=0; SYSTEM.PUTREG( 0, nfds ); SYSTEM.PUTREG( 8, readfdsPtr ); SYSTEM.PUTREG( 9, writefdsPtr ); SYSTEM.PUTREG( 10, exceptfdsPtr ); SYSTEM.PUTREG( 11, timeoutPtr ); SYSTEM.PUTREG( 1, Dummy ); SYSTEM.CALL( -126, bsdBase ); ReturnD0 END select; PROCEDURE send*(s, bufPtr, len, flag: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, bufPtr ); SYSTEM.PUTREG( 1, len ); SYSTEM.PUTREG( 2, flag ); SYSTEM.CALL( -66, bsdBase ); ReturnD0 END send; PROCEDURE sendto*(s, bufPtr, len, flags, toPtr, tolen: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 8, bufPtr ); SYSTEM.PUTREG( 1, len ); SYSTEM.PUTREG( 2, flags ); SYSTEM.PUTREG( 9, toPtr ); SYSTEM.PUTREG( 3, tolen ); SYSTEM.CALL( -60, bsdBase ); ReturnD0 END sendto; PROCEDURE setsockopt*(s, level, optname, optvalPtr, optlen: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, s ); SYSTEM.PUTREG( 1, level ); SYSTEM.PUTREG( 2, optname ); SYSTEM.PUTREG( 8, optvalPtr ); SYSTEM.PUTREG( 3, optlen ); SYSTEM.CALL( -90, bsdBase ); ReturnD0 END setsockopt; PROCEDURE socket*(af, type, protocol: LONGINT): LONGINT; BEGIN SYSTEM.PUTREG( 0, af ); SYSTEM.PUTREG( 1, type ); SYSTEM.PUTREG( 2, protocol ); SYSTEM.CALL( -30, bsdBase ); ReturnD0 END socket; PROCEDURE OpenLib*(); TYPE LibraryPtr = POINTER TO AmigaExec.Library; VAR lib : LibraryPtr; BEGIN bsdBase:=AmigaExec.OpenLibrary(bsdName,minversion); IF bsdBase#0 THEN lib:=SYSTEM.VAL(LibraryPtr,bsdBase); bsdVersion:=lib.version; ELSE Console.Str("Can't open bsdsocket.library. Please start AmiTCP."); Console.Ln; END; END OpenLib; PROCEDURE CloseLib*(); BEGIN IF bsdBase#0 THEN AmigaExec.CloseLibrary( bsdBase ) END; END CloseLib; BEGIN bsdBase:=0; AmigaExec.Register(termEntry, CloseLib) END AmigaBSD.